package com.huweilong.commands;

import com.huweilong.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * 书籍上架，管理员角色
 *
 * @author 是阿秋啊
 * @date 2022/04/09 10:17
 **/
public class PutAwayCommand {
    // 实际执行的SQl代码
    // 两种情况，新增或者更新
    public static void main(String[] args) throws SQLException {
        // 1.不存在的登陆
        Scanner input = new Scanner(System.in);
        System.out.print("请输入书名：");
        String name = input.nextLine();
        System.out.print("请上架数量：");
        int count = input.nextInt();
        System.out.println("DEBUG:读取到用户输入的书名是 ｜" + name + "|");
        System.out.println("DEBUG:读取到用户输入的上架数量是 ｜" + count + "|");
        // 执行SQL
        // 先判断是更新还是插入
        Integer bid = null;
        try (Connection c = DBUtil.connection()) {
            String sql = "select bid from books where name = ?";
            try (PreparedStatement ps = c.prepareStatement(sql)) {
                ps.setString(1, name);
                System.out.println("DEBUG: 执行 SQL：" + ps);
                try (ResultSet rs = ps.executeQuery()) {
                    if (rs.next()) {
                        bid = rs.getInt(1);
                    }
                }
            }
        }
        System.out.println("DEBUG: 根据书名查到的bid为：" + bid);
        // 根据判断结果进行更新
        try (Connection c = DBUtil.connection()) {
            if (bid == null) {
                // 说明书籍不存在，使用insert上架
                System.out.println("DEBUG：使用insert into进行上架");
                String sql = "insert into books (name,count,total) values (?,?,?)";
                try (PreparedStatement ps = c.prepareStatement(sql)) {
                    ps.setString(1, name);
                    ps.setInt(2, count);
                    ps.setInt(3, count);

                    System.out.println("DEBUG: 执行 SQL：" + ps);

                    ps.executeUpdate();
                }
            } else {
                // 说明存在书籍，进行更新操作即可
                System.out.println("DEBUG：使用update进行上架");
                String sql = "update books set count = count + ?, total = total + ? where bid = ?";
                try (PreparedStatement ps = c.prepareStatement(sql)) {
                    ps.setInt(1, count);
                    ps.setInt(2, count);
                    ps.setInt(3, bid);

                    System.out.println("DEBUG: 执行 SQL：" + ps);

                    ps.executeUpdate();
                }
            }
        }
        System.out.println("上架成功！");
    }
}
